package com.hjm.project.channel.invoice.domain;

import com.hjm.framework.aspectj.lang.annotation.Excel;
import com.hjm.framework.web.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
 * 电子发票信息对象 channel_invoice
 * 
 * @author maker-platform
 * @date 2025-03-19
 */
@Data
public class ChannelInvoice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 代理商唯一标识ID */
    @Excel(name = "代理商唯一标识ID")
    private String agentId;

    /** 发票来源系统标识（如：ERP/CRM） */
    @Excel(name = "发票来源系统标识", readConverterExp = "如=：ERP/CRM")
    private String source;

    /** 开票操作员姓名 */
    @Excel(name = "开票操作员姓名")
    private String operatorName;

    /** 发票金额（单位：元） */
    @Excel(name = "发票金额", readConverterExp = "单=位：元")
    private String amount;

    /** 发票代码(唯一)，国家税务总局分配的10/12位代码 */
    @Excel(name = "发票代码(唯一)，国家税务总局分配的10/12位代码")
    private String invoiceCode;

    /** 纳税人识别号（税务登记号） */
    @Excel(name = "纳税人识别号", readConverterExp = "税=务登记号")
    private String taxpayerNo;

    /** 发票号码(唯一)，8位或20位号码 */
    @Excel(name = "发票号码(唯一)，8位或20位号码")
    private String invoiceNo;

    /** 税率百分比（格式示例：3%, 13%） */
    @Excel(name = "税率百分比", readConverterExp = "格=式示例：3%,,1=3%")
    private String taxRatio;

    /** 税额（单位：元） */
    @Excel(name = "税额", readConverterExp = "单=位：元")
    private String tax;

    /** 开票时间（精确到秒） */
    @Excel(name = "开票时间", readConverterExp = "精=确到秒")
    private String invoiceTime;

    /** 发票内容摘要 */
    @Excel(name = "发票内容摘要")
    private String invoiceContent;

    /** 快递单号（默认0表示电子发票） */
    @Excel(name = "快递单号", readConverterExp = "默=认0表示电子发票")
    private String trackingNo;

    /** 子代理商ID（多级代理场景） */
    @Excel(name = "子代理商ID", readConverterExp = "多=级代理场景")
    private String subAgentId;
    private String applyAgentId;

    /** 图片地址 */
    @Excel(name = "图片地址")
    private String imagePath;

    /** 发票状态 */
    @Excel(name = "发票状态")
    private Integer status;

    @Excel(name = "添加时间")
    private String createtime;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("agentId", getAgentId())
            .append("source", getSource())
            .append("operatorName", getOperatorName())
            .append("amount", getAmount())
            .append("invoiceCode", getInvoiceCode())
            .append("taxpayerNo", getTaxpayerNo())
            .append("invoiceNo", getInvoiceNo())
            .append("taxRatio", getTaxRatio())
            .append("tax", getTax())
            .append("invoiceTime", getInvoiceTime())
            .append("invoiceContent", getInvoiceContent())
            .append("trackingNo", getTrackingNo())
            .append("subAgentId", getSubAgentId())
            .append("imagePath", getImagePath())
            .append("createtime", getCreateTime())
            .append("status", getStatus())
            .append("remark", getRemark())
            .toString();
    }
}
